听说过曹操有一匹好马叫做“绝影”,快得连影子都追不上它。很久以后他才知道所谓绝影只是一个传说,布加迪威龙是世界上最快量产跑车,可它跑不过时光,也跑不过早已被注定的--命运。
import sys
import hashlib
import requests
reload(sys)
sys.setdefaultencoding('utf-8')
主要功能
hashlib 是一个提供了一些流行的hash算法的 Python 标准库,其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512。注意,你必须传入的值是不可变类型的,在Python3中只接受bytes类型的数据。
MD5加密代码演示
md5 = hashlib.md5()
md5.update('langzi')
print md5.hexdigest()
运行结果:
1f39efed68efce4ab4130f0c665a2f04
常用方法就是这样,先定义一个变量接受hashlib,然后传入你要计算的数值update,最后打印出来。
SHA1加密代码演示
sha1 = hashlib.sha1()
sha1.update('langzi')
print sha1.hexdigest()
运行结果:
af9e0aecdd8b8bfda6c223f438366dc7d8882f90
选择sha1算法,然后添加对象,计算哈希码,最后打印出来,基本格式都是这样,不同算法的唯一区别在于hashlib.(),比如要计算md5就把\改成md5就成。
构造新的哈希对象
h = hashlib.new('ripemd160', 'hello python')
# ripemd160是一个160位的hash算法. ripemd系列算法基于md4, md5.
print h.hexdigest()
这种基本在日常用的很少。
判断网页CMS类型的指纹
在扫描器中,有需要判断网址的CMS类型,其中判断类型方法有一种是CMS指纹。CMS指纹:网站文件|CMS类型|网站文件的MD5值。
/static/image/admincp/cloud/qun_op.png|DISCUZ|AB35FA459B0BB01D31BA8FAD0953FCC9|
/widget/images/thumbnail.jpg|ECSHOP|7BB50E4281FA02758834A2E9D7BA9FB9|
/js/calendar/active-bg.gif|ECSHOP|F8FB9F2B7428C94B41320AA1BC9CF601|
/phpcms/libs/data/font/Vineta.ttf|PHPCMS|E6E557BAD69B09533827D9652E0C11AB|
/statics/images/admin_img/arrowhead-y.png|PHPCMS|6C34F70BD2A05C8C5DDEBB369B5B9509|
代码实例
req = requests.get(url='http://360.mafengwo.cn/static/image/admincp/cloud/qun_op.png')
md5 = hashlib.md5()
md5.update(req.content)
print md5.hexdigest()
检测方法就是把网站的文件拼接,然后方法这个网站路径,获取md5值,对比md5,判断CMS类型。